/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.tpj.database.akcia;

import cz.tpj.database.obrazky.Obrazok;
import cz.tpj.util.Validation;
import cz.tpj.util.ErrorDatabase;

/**
 *
 * 
 * Slouží jako přepravka. Třída je koncipována podle databázové tabulky Akcia.
 * @author jabo
 */

public class Akcia {
    private String id;
    private String nazov;
    private String kratky_popis;;
    private String dlhy_popis;
    private String datum;
    private String mesto;
    private String bod_zaujmu;
    private String zamestnanec;
    private Obrazok obrazky;

    //---------------------------konstruktory-----------------------------------
    
    /**
     * konstruktor triedy Akcia, vytvori instanciu triedy Akcia podla zadanych
     * parametrov
     * 
     * @param Id (smallint 0 az 32767)
     * @param Nazov (varchar[100])
     * @param kratky_popis (varchar[500])
     * @param dlhy_popis (varchar[5000])
     * @param Datum (DATETIME v mysql formate tj. yyyy-mm-dd hh:mm:ss)
     * @param mesto (smallint 0 az 32767)
     * @param Bod_zaujmu (smallint 0 az 32767)
     * @param Zamestnanec (smallint 0 az 32767)
     * @param Obrazky (objekt obrazky)
     */
    
    public Akcia (String Id, String Nazov, String kratky_popis, String dlhy_popis, String Datum, String mesto, String Bod_zaujmu, String Zamestnanec, Obrazok Obrazky) {
        this.id = Id;
        this.nazov = Nazov;
        this.kratky_popis = kratky_popis;
        this.dlhy_popis = dlhy_popis;
        this.datum = Datum;
        this.mesto = mesto;
        this.zamestnanec = Zamestnanec;
        this.bod_zaujmu = Bod_zaujmu;
        this.obrazky = Obrazky;
    }
    //----------------------------metody----------------------------------------

    /**
     * nastaví hodnotu Id (id akcie)
     * @param  hodnota, ktorú chceme nastaviť pre Id (číslo od 0 po 8388607)
     */
    
    public void setId (String Id) throws ErrorDatabase  {
        Validation val = new Validation();
        this.id = val.validatedNumber("Id", Id, 0, 8388607);
    }
    
    /**
     * vráti hodnotu Id (id akcie)
     * @return hodnota Id (smallint 0 az 32767)
     */
    
    public String getId() {
        return this.id;
    }
    
    /**
     * nastaví nazov akcie (varchar[100])
     * @param  hodnota, ktorú chceme nastaviť pre názov (reťazec maximálne 100 znakov)
     */
    
    public void setNazov(String Nazov) throws ErrorDatabase  {
        Validation val = new Validation();
        this.nazov = val.validatedString("Nazov", Nazov, 0, 100);
    }
    
    /**
     * vráti nazov akcie  (varchar[100])
     * @return hodnota nazov
     */    
    
    public String getNazov () {
        return this.nazov;
    }
    
    /**
     * nastaví Krátky popis akcie  (varchar[500])
     * @param  hodnota, ktorú chceme nastaviť pre KratkyPopis (reťazec maximálne 500 znakov)
     */  
    
    public void setKratkyPopis(String KratkyPopis) throws ErrorDatabase  {
        Validation val = new Validation();
        this.kratky_popis = val.validatedString("KratkyPopis", KratkyPopis, 0, 500);
    }
    
    /**
     * vráti Krátky popis akcie  (varchar[500])
     * @return hodnota KratkyPopis
     */  
    
    public String getKratkyPopis () {
        return this.kratky_popis;
    }
    
    /**
     * nastaví dlhý popis akcie (varchar[5000])
     * @param  hodnota, ktorú chceme nastaviť pre dlhý popis akcie (reťazec maximálne 5000 znakov)
     */ 
    
    public void setDlhyPopis(String DlhyPopis) throws ErrorDatabase  {
        Validation val = new Validation();
        this.dlhy_popis = val.validatedString("DlhyPopis", DlhyPopis, 0, 5000);
    }
    
    /**
     * vráti dlhý popis akcie (varchar[5000])
     * @return hodnota dlhy_popis
     */   
    
    public String getDlhyPopis () {
        return this.dlhy_popis;
    }
    
    /**
     * nastaví datum kedy bola akcie pridana (DATETIME v mysql formate tj. yyyy-mm-dd hh:mm:ss)
     * @param  hodnota, ktorú chceme nastaviť pre datum (valídny dátum v MYSql formáte YYYY-mm-dd HH:mm:ss)
     */    
    
    public void setDatum(String Datum) throws ErrorDatabase  {
        Validation val = new Validation();
        this.datum = val.validatedDate(Datum);
    }
    
    /**
     * vráti datum kedy bola akcia pridana  (DATETIME v mysql formate tj. yyyy-mm-dd hh:mm:ss)
     * @return hodnota datum
     */                
    
    public String getDatum () {
        return this.datum;
    }
    
    /**
     * nastaví hodnotu id mesta pod ktore akcia spada
     * @param  hodnota (smallint 0 az 255)
     */    
    
    public void setMesto(String Mesto) throws ErrorDatabase  {
        Validation val = new Validation();
        this.mesto = val.validatedNumber("Mesto", Mesto, 0, 255);
    }    
    
    /**
     * vráti hodnotu mesta pod ktore akcia spada
     * @return hodnota mesto (smallint 0 az 255)
     */                    
    
    public String getMesto() {
        return this.mesto;
    }
    
    /**
     * nastaví hodnotu zamestnanec ktory akciu pridal
     * @param  hodnota, ktorú chceme nastaviť pre zamestnanec (číslo od 0 do 255)
     */    
    
    public void setZamestnanec (String Zam) throws ErrorDatabase  {
        Validation val = new Validation();
        this.zamestnanec = val.validatedNumber("Zam", Zam, 0, 255);
    }
    
    /**
     * vráti hodnotu zamestnanec 
     * @return hodnota zamestnanec (0 az 255)
     */                        
    
    public String getZamestnanec () {
        return this.zamestnanec;
    }
    
    /**
     * nastaví hodnotu bodu zaujmu pod ktory akcia spada
     * @param  hodnota, ktorú chceme nastaviť pre bod_zaujmu (číslo od 0 do 255)
     */    
    
    public void setBodZaujmu (String BodZaujmu) throws ErrorDatabase  {
        Validation val = new Validation();
        this.bod_zaujmu = val.validatedNumber("BodZaujmu", BodZaujmu, 0, 8388607);
    }
    
    /**
     * vráti hodnotu bod_zaujmu pod ktory akcia spada
     * @return hodnota bod_zaujmu (cislo od 0 po 255)
     */   
    
    public String getBodZaujmu () {
        return this.bod_zaujmu;
    }
    
    /**
     * nastaví hodnotu obrazky (reprezentuje záznamy tabuľky obrazky_mesto, kde 
     * hodnota kľúča mesto_id sa rovná id objektu s ktorým sa práve pracuje)
     * @param  objekt typu obrazok
     */    
    
    public void setObrazky(Obrazok Obrazky) {
        this.obrazky = Obrazky;
    }
    
    /**
     * @return obrazky (objekt Obrazok)
     */                                
    
    public Obrazok getObrazky () {
        return this.obrazky;
    }

}
